home *** CD-ROM | disk | FTP | other *** search
/ Sound Fx / Sound Fx.iso / Software / UNZIPED / DWSTK / ERR.PAS < prev    next >
Pascal/Delphi Source File  |  1996-10-10  |  10KB  |  310 lines

  1. (******************************************************************************
  2. File:      err.pas
  3. Version:     2.22
  4. Tab stops: every 2 columns
  5. Project:   any STK related code
  6. Copyright: 1994-1995 DiamondWare, Ltd.    All rights reserved.*
  7. Written:     Keith Weiner & Erik Lorenzen
  8. DPMI Ver:  Tom Repstad
  9. Purpose:   Contains a routine to handle any error generated by the STK
  10. History:   94/10/21 KW Started
  11.            95/02/21 EL Finalized for 1.00
  12.            95/03/18 EL Added new error to err_Display(), dws_BUSY
  13.            95/03/22 EL Finalized for 1.01
  14.                      95/04/06 EL Added new error to err_Display(), dws_IRQDISABLED
  15.            95/04/11 EL moved DisplayError to err.c (err_Display).
  16.            95/04/12 EL Finalized for 1.02
  17.                      95/06/06 EL Finalized for 1.03, no changes
  18.                      95/06/06 EL Finalized for 2.00, no changes
  19.            95/09/11 TR Protected Mode Version
  20.                      95/10/16 EL Finalized for 2.10, fixed a commented out error
  21.                      95/10/24 EL Finalized for 2.20, updated err comments (to err.c)
  22.                      95/12/07 EL Finalized for 2.21, no changes
  23.                      96/10/10 EL Finalized for 2.22, no changes
  24.  
  25. Notes
  26. -----
  27. *Permission is expressely granted to use err_Display or any derivitive made
  28.  from it to registered users of the STK.
  29. ******************************************************************************)
  30.  
  31.  
  32.  
  33. unit err;
  34.  
  35. interface
  36.  
  37. uses crt, dws;
  38.  
  39. procedure err_Display;
  40.  
  41. implementation
  42.  
  43. procedure err_Display;
  44. begin
  45.   case dws_ErrNo of
  46.  
  47.     dws_EZERO:
  48.     begin
  49.       (*
  50.        . This should not have happened, considering how we got here!
  51.       *)
  52.             writeln('DWS: I am confused!  There is no error number!');
  53.     end;
  54.  
  55.     dws_NOTINITTED:
  56.     begin
  57.       (*
  58.        . If we get here, it means you haven't called dws_Init().
  59.        . The STK needs to initialize itself and the hardware before
  60.        . it can do anything.
  61.       *)
  62.             writeln('DWS: The STK was not initialized');
  63.     end;
  64.  
  65.     dws_ALREADYINITTED:
  66.     begin
  67.       (*
  68.              . If we get here, it means you've called dws_Init() already.
  69.              . Calling dws_DetectHardWare at this point would cause zillions
  70.              . of problems if we let the call through.
  71.       *)
  72.             writeln('DWS: The STK was already initialized');
  73.     end;
  74.  
  75.     dws_NOTSUPPORTED:
  76.     begin
  77.       (*
  78.        . If we get here, it means that either the user's machine does not
  79.        . support the function you just called, or the STK was told not to
  80.        . support it in dws_Init.
  81.       *)
  82.             writeln('DWS: Function not supported');
  83.     end;
  84.  
  85.     dws_DetectHardware_UNSTABLESYSTEM:
  86.     begin
  87.       (*
  88.        . Please report it to DiamondWare if you get here!
  89.        .
  90.        . Ideally, you would disable control-C here, so that the user can't
  91.        . hit control-alt-delete, causing SmartDrive to flush its (possibly
  92.        . currupt) buffers.
  93.       *)
  94.             writeln('DWS: The system (or DOS box) is unstable!');
  95.             writeln('     If not in a multitasking system, please power down!');
  96.  
  97.       while (1 = 1) do
  98.       begin
  99.       end;
  100.     end;
  101.  
  102.     (*
  103.      . The following three errors are USER/PROGRAMMER errors.  You forgot
  104.      . to fill the cardtyp struct full of -1's (except in those fields
  105.      . you intended to override, or the user (upon the unlikly event that
  106.      . the STK was unable to find a card) gave you a bad overide value.
  107.     *)
  108.     dws_DetectHardware_BADBASEPORT:
  109.     begin
  110.       (*
  111.        . You set dov.baseport to a bad value, or
  112.        . didn't fill it with a -1.
  113.       *)
  114.             writeln('DWS: Bad port address');
  115.     end;
  116.  
  117.     dws_DetectHardware_BADDMA:
  118.     begin
  119.       (*
  120.        . You set dov.digdma to a bad value, or
  121.        . didn't fill it with a -1.
  122.       *)
  123.             writeln('DWS: Bad DMA channel');
  124.     end;
  125.  
  126.     dws_DetectHardware_BADIRQ:
  127.     begin
  128.       (*
  129.        . You set dov.digirq to a bad value, or
  130.        . didn't fill it with a -1.
  131.       *)
  132.             writeln('DWS: Bad IRQ level');
  133.     end;
  134.  
  135.     dws_Kill_CANTUNHOOKISR:
  136.     begin
  137.       (*
  138.        . The STK points the interrupt vector for the sound card's IRQ
  139.        . to its own code in dws_Init.
  140.        .
  141.        . dws_Kill was unable to restore the vector to its original
  142.        . value because other code has hooked it after the STK
  143.        . initialized(!)  This is really bad.  Make the user get rid
  144.        . of it and call dws_Kill again.
  145.       *)
  146.             writeln('DWS: Get rid of your TSR, pal!');
  147.             writeln('     (Press any key)');
  148.       repeat
  149.       until (keypressed);
  150.     end;
  151.  
  152.     dws_X_BADINPUT:
  153.     begin
  154.       (*
  155.        . The mixer funtion's can only accept volumes between 0 & 255,
  156.        . the volume will remain unchanged.
  157.       *)
  158.             writeln('DWS: Bad mixer level');
  159.     end;
  160.  
  161.     dws_D_NOTADWD:
  162.     begin
  163.       (* You passed the STK a pointer to something which is not a .DWD file! *)
  164.             writeln('DWS: Pointer does not point to a .DWD');
  165.     end;
  166.  
  167.     dws_D_NOTSUPPORTEDVER:
  168.     begin
  169.       (*
  170.        . The STK can't play a .DWD converted using a version of VOC2DWD.EXE
  171.        . newer than itself.  And, although we'll try to maintain backwards
  172.        . compatibility, we may not be able to guarantee that newer versions
  173.        . of the code will be able to play older .DWD files.  In any event,
  174.        . it's a good idea to always convert .VOC files with the utility
  175.        . which comes with the library you're linking into your application.
  176.       *)
  177.             writeln('DWS: Please reconvert this file using the VOC2DWD.EXE');
  178.             writeln('     which came with this library');
  179.     end;
  180.  
  181.     dws_D_INTERNALERROR:
  182.     begin
  183.       (*
  184.        . This error should never occur and probably will not affect sound
  185.        . play(?).  If it happens please contact DiamondWare.
  186.       *)
  187.             writeln('DWS: An internal error has occured');
  188.             writeln('     Please contact DiamondWare');
  189.     end;
  190.  
  191.     dws_DPlay_NOSPACEFORSOUND:
  192.     begin
  193.       (*
  194.        . This error is more like a warning, though it may happen on a
  195.        . regular basis, depending on how many sounds you told the STK
  196.        . to allow in dws_Init, how you chose to prioritize sounds and
  197.        . how many sounds are currently being played.
  198.       *)
  199.             writeln('DWS: No more room for new digitized sounds right now');
  200.     end;
  201.  
  202.     dws_DSetRate_FREQTOLOW:
  203.     begin
  204.       (*
  205.        . The STK will set rate as close as possible to the indicated rate
  206.        . but cannot set a rate that low.
  207.       *)
  208.             writeln('DWS: Playback frequency too low');
  209.     end;
  210.  
  211.     dws_DSetRate_FREQTOHIGH:
  212.     begin
  213.       (*
  214.        . The STK will set rate as close as possible to the indicated rate
  215.        . but cannot set a rate that high.
  216.       *)
  217.             writeln('DWS: Playback frequency too high');
  218.     end;
  219.  
  220.     dws_MPlay_NOTADWM:
  221.     begin
  222.       (* You passed the STK a pointer to something which is not a .DWM file! *)
  223.             writeln('DWS: Pointer does not point to a .DWM');
  224.     end;
  225.  
  226.     dws_MPlay_NOTSUPPORTEDVER:
  227.     begin
  228.       (*
  229.        . The STK can't play a .DWM converted using a version of VOC2DWM.EXE
  230.        . newer than itself.  And, although we'll try to maintain backwards
  231.        . compatibility, we may not be able to guarantee that newer versions
  232.        . of the code will be able to play older .DWM files.  In any event,
  233.        . it's a good idea to always convert .MID files with the utility
  234.        . which comes with the library you're linking into your application.
  235.       *)
  236.             writeln('DWS: Please reconvert this file using the MID2DWM.EXE');
  237.             writeln('     which came with this library');
  238.     end;
  239.  
  240.     dws_MPlay_INTERNALERROR:
  241.     begin
  242.       (*
  243.        . This error should never occur and probably will not affect sound
  244.        . play(?). If it happens please contact DiamondWare.
  245.       *)
  246.             writeln('DWS: An internal error has occured.');
  247.             writeln('     Please contact DiamondWare');
  248.     end;
  249.  
  250.     dws_BUSY:
  251.     begin
  252.       (*
  253.        . Can only occur when DWS is being called from the background
  254.        . (within an ISR--possibly timer or keyboard handler.)  If you get
  255.        . this error, do your IRET, and call again from your next interrupt.
  256.        . Repeat until successful.
  257.       *)
  258.       writeln('DWS is busy now, please call again later.');
  259.     end;
  260.  
  261.     dws_IRQDISABLED:
  262.     begin
  263.             (*
  264.              . The following error may be triggered by dws_Init, dws_Kill,
  265.              . or dws_DetectHardWare.  It occurs if interrupts are disabled.
  266.              . Enable interrupts (execute the STI instruction) and call again.
  267.             *)
  268.             writeln('DWS: Interrupts are disabled.');
  269.         end;
  270.  
  271. {$IFDEF DPMI}
  272.     dws_NOTRESIDENT:
  273.     begin
  274.             (*
  275.              . The real-mode STK component has not been installed, or
  276.              . you may have mixed shareware & registerd versions.  The
  277.              . solution is simple. Either STKRUN.EXE or run the correct
  278.              . STKRUN.EXE.
  279.             *)
  280.             writeln('DWS: The STK driver is not resident, or you may be');
  281.             writeln('     mixing shareware and registered versions.');
  282.             writeln('     Registered libs are not compatible with the');
  283.             writeln('     shareware STKRUN.EXE, and vice versa.');
  284.     end;
  285.       
  286.     dws_NOMEM:
  287.     begin
  288.       (*
  289.             . The following error will occur if the STK cannot allocate
  290.             . enough DOS (real-mode) memory.
  291.       *)
  292.             writeln('DWS: Insufficient DOS memory.');
  293.     end;
  294. {$ENDIF}
  295.  
  296.     else
  297.     begin
  298.       (*
  299.        . If this function was clipped intact from err.c, this case
  300.        . should never occur and probably will not affect sound play(?)
  301.        . If it happens please contact DiamondWare.
  302.       *)
  303.             writeln('DWS: I am confused!  Where am I?  HOW DID I GET HERE????');
  304.             writeln('     The ERROR number is:',dws_ErrNo);
  305.     end;
  306.   end;
  307. end;
  308.  
  309. end.
  310.